
#include "Perus.h"






void MALLI3D::Alusta( char *TiedostoNimi, char *Nimi )
{

    Lataa3DS( TiedostoNimi, *this );

    NimiID = Nimi;
    
    OnkoVBO = false;
    if(GLEW_ARB_vertex_buffer_object)
    {
        //TeeVBO();
    }
}    


void MALLI3D::TeeVBO()
{
    OnkoVBO = true;

	glGenBuffersARB( 1, &VerteksienID );
	glBindBufferARB( GL_ARRAY_BUFFER_ARB, VerteksienID );
	glBufferDataARB( GL_ARRAY_BUFFER_ARB, VerteksienLKM * 3 * sizeof(GLfloat), Verteksit, GL_STATIC_DRAW_ARB );

	glGenBuffersARB( 1, &TeksKoordienID );
	glBindBufferARB( GL_ARRAY_BUFFER_ARB, TeksKoordienID );
	glBufferDataARB( GL_ARRAY_BUFFER_ARB, VerteksienLKM * 2 * sizeof(GLfloat), TeksKoordit, GL_STATIC_DRAW_ARB );

	delete [] Verteksit; Verteksit = NULL;
	delete [] TeksKoordit; TeksKoordit = NULL;

}







void GRAFIIKKA::AlustaMalli3DPuskuri()
{
    char **TiedostoNimiLista;
    char **NimiIDLista;

    char Nimi[512];

    char *LatausLista;
    if(LataaLista( "Tiedostot\\LatausLista.txt", LatausLista ))
    {
        char *Ladattavat = strstr( LatausLista, "3D_MALLIT" );

        if(Ladattavat != NULL )
        {
            int LKM = 0;
            for(int i=0; Ladattavat[i] != '#'; i++){ if(Ladattavat[i] == '>'){ LKM++; } }
            Malli3DLKM = LKM;


            TiedostoNimiLista = new char *[Malli3DLKM];
            NimiIDLista = new char *[Malli3DLKM];


            LKM = 0;
            for(int i=0; LKM < Malli3DLKM; i++)
            {
                if(Ladattavat[i] == '>')
                {
                    i++;    //hypätään '>' yli
                    int NimenPituus = 0;
                    for(int BegPos = i; Ladattavat[i-1] != '='; i++ ){ Nimi[i - BegPos] = Ladattavat[i]; NimenPituus++;}
                    TiedostoNimiLista[LKM] = new char [NimenPituus];
                    for(int n=0; n<NimenPituus; n++){ TiedostoNimiLista[LKM][n] = Nimi[n]; }
                    PyyhiLoppu(TiedostoNimiLista[LKM], '='); //poistaa pienen bugin...

                    //i++;    //hypätään '>' yli
                    NimenPituus = 0;
                    for(int BegPos = i; Ladattavat[i-1] != ';'; i++ ){ Nimi[i - BegPos] = Ladattavat[i]; NimenPituus++;}
                    NimiIDLista[LKM] = new char [NimenPituus];
                    for(int n=0; n<NimenPituus; n++){ NimiIDLista[LKM][n] = Nimi[n]; }
                    PyyhiLoppu(NimiIDLista[LKM], ';'); //poistaa pienen bugin...

                    LKM++;
                }
            }
        }
    }

    Malli3DPuskuri = new MALLI3D [Malli3DLKM];
    for(int i=0; i<Malli3DLKM; i++)
    {
        char TiedostoNimi[512] = {"Tiedostot\\3D Mallit\\"};
        strcat( TiedostoNimi, TiedostoNimiLista[i] );
        Malli3DPuskuri[i].Alusta( TiedostoNimi , NimiIDLista[i] );
    }
    delete [] TiedostoNimiLista; TiedostoNimiLista = NULL;
    delete [] NimiIDLista; TiedostoNimiLista = NULL;
}
